package main

import (
	"fmt"
	"strconv"
)

func Anli1() {
	data := map[string][]string{"hebei": []string{"廊坊市", "石家庄", "邯郸"}, "beijing": []string{"朝阳", "丰台", "海淀"}}
	// 打印河北的第二个城市
	fmt.Println(data["hebei"][1])
	// 循环打印每个省份的名字和城市数量
	for shenfen, citys := range data {
		fmt.Printf("%s中有%d个城市\n", shenfen, len(citys))
	}
	// 添加一个新的省份和城市的key-value
	data["jiangsu"] = []string{"南京", "南通", "苏州"}
	fmt.Println(data)
	// 删除北京的key-value
	delete(data, "beijing")
	fmt.Println(data)
}

func Anli2() {
	info := map[int]map[string]string{1001: {"name": "yuan", "age": "23"}, 1002: {"name": "alvin", "age": "33"}}
	// 打印学号为1002的学生的年龄
	fmt.Println(info[1002]["age"])
	// 循环打印每个学员的学号，姓名，年龄
	for stusNum, v := range info {
		name := v["name"]
		age := v["age"]
		fmt.Println(stusNum, name, age)
	}
	// 添加一个新的学员
	info[1003] = map[string]string{"name": "baim0", "age": "23"}
	fmt.Println(info)
	// 删除1001的学生
	delete(info, 1001)
	fmt.Println(info)
}

func Anli3() {
	stus := []map[string]string{{"name": "yuan", "age": "23"}, {"name": "rain", "age": "22"}, {"age": "32", "name": "eric"}}
	// 打印第二个学生的姓名
	fmt.Println(stus[1]["name"])
	// 循环打印每一个学生的姓名和年龄
	for _, i := range stus {
		fmt.Println(i["name"], i["age"])
	}
	// 添加一个新的学生map
	stus = append(stus, map[string]string{"name": "baim0", "age": "23"})
	fmt.Println(stus)
	// 删除一个学生map
	//stus = append(stus[:1], stus[2:]...)
	//fmt.Println(stus)
	// 将姓名为rain的学生的年龄自加一岁
	for _, i := range stus {
		if i["name"] == "rain" {
			ageNum, _ := strconv.Atoi(i["age"])
			i["age"] = strconv.Itoa(ageNum + 1)
			fmt.Println(i)
		}
	}
}
func Anli4() {
	// 根据age的大小重新排序
	stus := []map[string]int{{"age": 23}, {"age": 33}, {"age": 18}}
	fmt.Println(stus)
}
func main() {
	// Anli1()
	// Anli2()
	// Anli3()
	Anli4()
}
